package com.macro.mall.common.log.annotation;

import com.macro.mall.common.constant.UnifiedLogTypeConstant;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 统一日志注解
 * 用于标记需要记录统一格式日志的方法
 * @author tiger
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface UnifiedLog {
    
    /**
     * 服务类型
     * @com.macro.mall.common.constant.UnifiedLogTypeConstant
     */
    String type() default UnifiedLogTypeConstant.SYSTEM;

    /**
     * 是否记录请求参数
     */
    boolean logRequest() default true;
    
    /**
     * 是否记录响应结果
     */
    boolean logResponse() default true;
    
    /**
     * 是否记录执行时间
     */
    boolean logExecuteTime() default true;
    
    /**
     * 忽略记录的参数索引（从0开始）
     */
    int[] ignoreParamIndex() default {};
}